<html>
<head>
<script>

if (window.testRunner) {
    testRunner.clearBackForwardList();
    testRunner.dumpAsText();
    testRunner.waitUntilDone();
}

function log(txt)
{
    document.getElementById("logger").innerText += txt + "\n";
}

function runTest()
{
    history.pushState("StateStringData", "New title");
    log("History length is " + history.length);
    history.back();
}

function statePopped()
{
    log("State popped - " + event.state + " (type " + typeof event.state + ")");
    if (event.state == null) {
        document.body.onpopstate = statePopped;
        history.forward();
    } else if (window.testRunner)
        testRunner.notifyDone();
}

</script>
<body onload="runTest();">
<pre>
This test does the following:
-Uses body.onpopstate to add a popstate handler (both by using the inline attribute and a script-assigned attribute)
-Makes a call to pushState()
-Makes sure the history length is correct
-Goes back, and makes sure the popstate event is correct
-Goes forward, and makes sure the popstate event is correct
</pre><br>
<pre id="logger"></pre>
</body>
<script>
document.body.onpopstate = statePopped;
</script>
</html>
